class CopyrightWebpackPlugin {
    // webpack插件是一个具有apply属性的js对象,apply属性会被webpack的compiler调用.
    apply(compiler) {
        // hooks是钩子的意思 emit是发生在webpack打包完成的阶段执行的意思
        // tapable工具提供三种方法,tap,tapAsync,tapPromise三种方法,注入自定义的构建步骤
        // compiler是webpack的实例，实例中包括的各种各样配置文件，打包的过程等等
        // Compilation 这次打包的内容的实例
        compiler.hooks.emit.tapAsync('CopyrightWebpackPlugin', (Compilation, cb) => {
            Compilation.assets['copyright.txt'] = {
                source: function () {
                    return 'copyright by one';
                },
                size: function () {
                    return 21;
                },
            };
            cb();
        });

        compiler.hooks.compile.tap('CopyrightWebpackPlugin', Compilation => {
            console.log('compiler');
        });
    }
}

module.exports = CopyrightWebpackPlugin;
